package day08;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import org.junit.Test;

/**
 * 使用异常捕获机制完成下述读取操作 读取emp.txt文件，并将每个员工信息读取出来，以一个Emp实例保存，然后将
 * 这些Emp实例存入到一个Map集合中。其中key为字符串，是该员工名字，而value 是该Emp实例。
 *  存入后，要求用户输入一个员工的名字,如:张三
 * 若该员工存在则输出该员工所有信息(Emp的toString方法返回的字符串) 输入的员工名若是英文，不要求区分大小写。
 * 若输入的员工名字不存在，则显示"查无此人"
 * 
 * @author Bonnie
 *
 */
public class Test04 {
	@Test
	public void test() {
		Scanner console = new Scanner(System.in);
		BufferedReader br = null;
		try {
			br = new BufferedReader(new InputStreamReader(new FileInputStream("./src/day08/emp.txt"), "UTF-8"));
			Map<String, Emp> map = new HashMap<String, Emp>();
			String str = "";
			while ((str = br.readLine()) != null) {//读取整行
				String[] ss = str.split(",");
				String name = ss[0];
				int age = Integer.parseInt(ss[1]);
				String gender = ss[2];
				int salary = Integer.parseInt(ss[3]);
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				Date hiredate;
				hiredate = sdf.parse(ss[4]);
				Emp emp = new Emp(name, age, gender, salary, hiredate);//创建emp对象
				map.put(name.toLowerCase(), emp);//key值变为小写实现不区分大小写
			}
			System.out.print("请输入员工姓名：");
			String personName = console.next();
			if (map.containsKey(personName.toLowerCase())) {//不区分大小写
				System.out.println(map.get(personName.toLowerCase()));
			} else {
				System.out.println("查无此人！");
			}
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
				console.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
